package com.shitou.shitoucommons.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.FieldType;

import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;

/**
 * class detail:
 *      在elasticSearch中，shitou索引下创建的product文档的规则模板
 * @author 石头人
 */
@SuppressWarnings("all")
@Data
@AllArgsConstructor
@ToString
@NoArgsConstructor
@Document(indexName = "muyang",type = "product",shards = 1,replicas = 0)
public class SearchResponseVo implements Serializable {

    /**
     * spuId
     */
    @Id
    private Long spuId;
    /**
     * 发布者id
     */
    @Field(type = FieldType.Long, index = false)
    private Long memberId;
    /**
     * ik_smart  粗粒度
     * 发布者名称
     */
    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String nickname;
    /**
     * 商品的展示图片
     */
    @Field(type = FieldType.Keyword, index = false)
    private String spuImage;
    /**
     * 商品标题
     */
    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String spuTitle;
    /**
     * 商品详细信息
     */
    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String spuDetail;
    /**
     * 商品价格
     */
    @Field(type = FieldType.Double)
    private Double spuPrice;
    /**
     * 商品的分类，可为空
     */
    @Field(type = FieldType.Keyword)
    private String category;
    /**
     * 商品分类的id
     */
    @Field(type = FieldType.Long)
    private Long categoryId;
    /**
     * 商品的品牌
     */
    @Field(type = FieldType.Keyword)
    private String brand;
    /**
     * 品牌log
     */
    @Field(type = FieldType.Keyword)
    private String brandLog;
    /**
     * 品牌id
     */
    @Field(type = FieldType.Long)
    private Long brandId;
    /**
     * 所有的图片
     */
    @Field(type = FieldType.Text, index = false)
    private String imageUrls;
    /**
     * 状态 1-启用，  2-不启用
     */
    @Field(type = FieldType.Integer)
    private Integer status = 1;

    /**
     * 商品的属性,,,当然，有些的商品的标题或者详细中也
     *      会包含了某些属性，用商品中包含的属性也可以作为
     *      关键字的查询依据,也可以从attrs也就是属性中进行查询
     */
    @Field(type = FieldType.Nested)
    private List<Attrs> attrs;

}
